﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using CRC.Clases;
using CRC.GestionSalones.Dominio.Clases;

namespace CRC.Inspecciones.Presentacion
{
    public partial class UsrZona : UserControl, IListadoInspectores 
    {
        protected List<IListadoZonasListener> lstIListadoZonas = new List<IListadoZonasListener>();

        public UsrZona()
        {
            InitializeComponent();
            
            //Origen de datos vacio para listado de salones asignados
            lstSalonesAsignados.DataSource = new List<Salon>();
            lstSalonesAsignados.ValueMember = "Id";
            lstSalonesAsignados.DisplayMember = "Nombre_Salon";
            
            //handlers
            //LstSalonesPotenciales.SelectedIndexChanged += new EventHandler(LstSalonesPotenciales_SelectedIndexChanged);
            //lstSalonesAsignados.SelectedIndexChanged += new EventHandler(lstSalonesAsignados_SelectedIndexChanged);
        }

        //void lstSalonesAsignados_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    butQuitarSalon.Enabled = LstSalonesPotenciales.SelectedIndices.Count > 0;
        //}

        //void LstSalonesPotenciales_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    butAnadirSalon.Enabled = LstSalonesPotenciales.SelectedIndices.Count > 0;
        //}

        public virtual void butOK_Click(object sender, EventArgs e)
        {
            //A definir en subclase
        }

        private void butKO_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        //private void butAnadirSalon_Click(object sender, EventArgs e)
        //{
        //    if (LstSalonesPotenciales.SelectedItems.Count > 0)
        //    {
        //        IList<Salon> potenciales = (IList<Salon>)LstSalonesPotenciales.DataSource;
        //        IList<Salon> asignados = (IList<Salon>)lstSalonesAsignados.DataSource;

        //        //Quitar salon de origen de datos y ponerlo en el otro
        //        Salon potencial_a_asignado = (Salon)LstSalonesPotenciales.SelectedItem;
        //        potenciales.Remove(potencial_a_asignado);
        //        asignados.Add(potencial_a_asignado);

        //        //Refrescars mapeos a listboxes
        //        ((CurrencyManager)this.BindingContext[LstSalonesPotenciales.DataSource]).Refresh();
        //        ((CurrencyManager)this.BindingContext[lstSalonesAsignados.DataSource]).Refresh();
        //    }
        //}

        //private void butQuitarSalon_Click(object sender, EventArgs e)
        //{
        //    IList<Salon> potenciales = (IList<Salon>)LstSalonesPotenciales.DataSource;
        //    IList<Salon> asignados = (IList<Salon>)lstSalonesAsignados.DataSource;

        //    //Quitar salon de origen de datos y ponerlo en el otro
        //    Salon asignado_a_potencial = (Salon)lstSalonesAsignados.SelectedItem;
        //    asignados.Remove(asignado_a_potencial);
        //    potenciales.Add(asignado_a_potencial);

        //    //Refrescars mapeos a listboxes
        //    ((CurrencyManager)this.BindingContext[asignados]).Refresh();
        //    ((CurrencyManager)this.BindingContext[potenciales]).Refresh();
        //}

        #region Miembros de IListadoInspectores

        public void añadirInspector(Persona inspector)
        {
            ((IList<Persona>)this.ComboInspectores.DataSource).Add(inspector);
            ((CurrencyManager)this.BindingContext[ComboInspectores.DataSource]).Refresh();
        }

        public void actualizarInspector(Persona inspector)
        {
            ((CurrencyManager)this.BindingContext[ComboInspectores.DataSource]).Refresh();
        }

        #endregion

        public void añadirIListadoZonasListener(IListadoZonasListener listener)
        {
            lstIListadoZonas.Add(listener);
        }

        public void quitarIListadozonasListener(IListadoZonasListener listener)
        {
            lstIListadoZonas.Remove(listener);
        }
    }
}
